% Acknowledgements for PETSc Users Manual
%
%   this information is a DUPLICATE of misc/acknwldg.html
%                MAKE SURE THEY MATCH!!!
%
\chapter{Acknowledgments}

\medskip \medskip \noindent
We thank all PETSc users for their many suggestions, bug reports, and
encouragement.

\vspace{.2in}

\noindent
Recent contributors to PETSc can be seen by visualizing the history of the PETSc git repository, for example at
\href{https://github.com/petsc/petsc/graphs/contributors}{github.com/petsc/petsc/graphs/contributors}.

\vspace{.2in}

\noindent 
Earlier contributors to PETSc include:
\begin{itemize}
  \item Asbjorn Hoiland Aarrestad - the explicit Runge-Kutta implementations (\lstinline{TSRK});
  \item G. Anciaux and J. Roman - the interfaces to the partitioning packages PTScotch, Chaco, and Party;
  \item Allison Baker - the flexible GMRES (\lstinline{KSPFGMRES}) and LGMRES (\lstinline{KSPLGMRES}) code;
  \item Chad Carroll - Win32 graphics;
  \item Ethan Coon - the \lstinline{PetscBag} and many bug fixes;
  \item Cameron Cooper - portions of the \lstinline{VecScatter} routines;
  \item Patrick Farrell - \lstinline{PCPATCH} and \lstinline{SNESPATCH};
  \item Paulo Goldfeld - the balancing Neumann-Neumann preconditioner (\lstinline{PCNN});
  \item Matt Hille;
  \item Joel Malard - the BICGStab(l) implementation (\lstinline{KSPBCGSL});
  \item Paul Mullowney, enhancements to portions of the Nvidia GPU interface;
  \item Dave May - the GCR implementation (\lstinline{KSPGCR});
  \item Peter Mell - portions of the \lstinline{DMDA} routines;
  \item Richard Mills - the \lstinline{AIJPERM} matrix format (\lstinline{MATAIJPERM}) for the Cray X1 and universal F90 array interface;
  \item Victor Minden - the NVIDIA GPU interface;
  \item Lawrence Mitchell - \lstinline{PCPATCH} and \lstinline{SNESPATCH};
  \item Todd Munson - the LUSOL (sparse solver in MINOS) interface (\lstinline{MATSOLVERLUSOL}) and several Krylov methods;
  \item Adam Powell - the PETSc Debian package;
  \item Robert Scheichl - the MINRES implementation (\lstinline{KSPMINRES});
  \item Kerry Stevens - the pthread-based \lstinline{Vec} and \lstinline{Mat} classes plus the various thread pools (no longer available);
  \item Karen Toonen - design and implementation of much of the PETSc web pages;
  \item Desire Nuentsa Wakam - the deflated GMRES implementation (\lstinline{KSPDGMRES});
  \item Florian Wechsung - \lstinline{PCPATCH} and \lstinline{SNESPATCH};
  \item Liyang Xu - the interface to PVODE, now SUNDIALS/CVODE (\lstinline{TSSUNDIALS});
\end{itemize}

\vspace{.3in}
\noindent
PETSc source code contains modified routines from the following public domain software packages:
\begin{itemize}
  \item LINPACK -    dense matrix factorization and solve; converted to C using {\tt f2c} and then
                     hand-optimized for small matrix sizes, for block matrix data structures;
  \item MINPACK -    see page \pageref{sec_fdmatrix}; sequential matrix coloring routines for finite difference Jacobian
                     evaluations; converted to C using {\tt f2c};
  \item SPARSPAK -   see page \pageref{sec_factorization}; matrix reordering routines, converted to C using {\tt f2c};
  \item libtfs     - the efficient, parallel direct solver developed by Henry Tufo and Paul Fischer for the direct solution of a coarse grid problem
                     (a linear system with very few degrees of freedom per processor).
\end{itemize}


\vspace{.3in}
\noindent
PETSc interfaces to the following external software:
\begin{itemize}
  \item BLAS and LAPACK - numerical linear algebra;
  \item Chaco - A graph partitioning package;\\\href{http://www.cs.sandia.gov/CRF/chac.html}{http://www.cs.sandia.gov/CRF/chac.html}
  \item Elemental -  Jack Poulson's parallel dense matrix solver package;\\\href{http://libelemental.org/}{http://libelemental.org/}
  \item HDF5 - the data model, library, and file format for storing and managing data,\\\href{https://support.hdfgroup.org/HDF5/}{https://support.hdfgroup.org/HDF5/}
  \item hypre -    the LLNL preconditioner library;\\\href{https://computation.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods}{https://computation.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods}
  \item LUSOL -       sparse LU factorization code (part of MINOS) developed by Michael Saunders,
                      Systems Optimization Laboratory, Stanford University;\\
                     \href{http://www.sbsi-sol-optimize.com/}{http://www.sbsi-sol-optimize.com/}
  \item MATLAB -      see page \pageref{ch_matlab};
  \item Metis/ParMeTiS - see page \pageref{sec_partitioning}, parallel graph partitioner,\\
                     \href{https://www-users.cs.umn.edu/~karypis/metis/}{https://www-users.cs.umn.edu/\~{}karypis/metis/}
  \item MUMPS -      see page \pageref{sec_externalsol}, MUltifrontal Massively Parallel sparse direct Solver developed by Patrick Amestoy,
                     Iain Duff, Jacko Koster, and Jean-Yves L'Excellent; \\
                     \href{http://www.enseeiht.fr/lima/apo/MUMPS/credits.html}{http://www.enseeiht.fr/lima/apo/MUMPS/credits.html}
  \item Party -     A graph partitioning package; \\ 
               \href{http://www2.cs.uni-paderborn.de/cs/ag-monien/PERSONAL/ROBSY/party.html}{http://www2.cs.uni-paderborn.de/cs/ag-monien/PERSONAL/ROBSY/party.html}
             \item PaStiX -     Parallel sparse LU and Cholesky solvers; \\\href{http://pastix.gforge.inria.fr/}{http://pastix.gforge.inria.fr/}
             \item PTScotch -    A graph partitioning package; \\\href{http://www.labri.fr/Perso/~pelegrin/scotch/}{http://www.labri.fr/Perso/\~{}pelegrin/scotch/}
  \item SPAI -        for parallel sparse approximate inverse preconditioning;\\ \href{https://cccs.unibas.ch/lehre/software-packages/}{https://cccs.unibas.ch/lehre/software-packages/}
  \item SuiteSparse - sequential sparse solvers, see page \pageref{sec_externalsol}, developed by Timothy A. Davis;\\
                    \href{http://faculty.cse.tamu.edu/davis/suitesparse.html}{http://faculty.cse.tamu.edu/davis/suitesparse.html}
  \item SUNDIALS/CVODE - see page \pageref{sec_sundials}, parallel ODE integrator;\\
                     \href{https://computation.llnl.gov/projects/sundials}{https://computation.llnl.gov/projects/sundials}
  \item SuperLU and SuperLU\_Dist - see page \pageref{sec_externalsol},
                    the efficient sparse LU codes developed by Jim Demmel,  Xiaoye S. Li, and John Gilbert;\\
                    \href{https://crd-legacy.lbl.gov/~xiaoye/SuperLU}{https://crd-legacy.lbl.gov/\~{}xiaoye/SuperLU}
                    \item STRUMPACK - the STRUctured Matrix Package; \\
                    \href{https://portal.nersc.gov/project/sparse/strumpack/}{https://portal.nersc.gov/project/sparse/strumpack/}
  \item Triangle and Tetgen - mesh generation packages; \\
    \href{https://www.cs.cmu.edu/~quake/triangle.html}{https://www.cs.cmu.edu/\~{}quake/triangle.html}\\
    \href{http://wias-berlin.de/software/tetgen/}{http://wias-berlin.de/software/tetgen/}
  \item Trilinos/ML - Sandia's main multigrid preconditioning package; \\\href{https://software.sandia.gov//trilinos/}{https://software.sandia.gov//trilinos/},
  \item Zoltan - graph partitioners from Sandia National Laboratory;\\ \href{http://www.cs.sandia.gov/zoltan/}{http://www.cs.sandia.gov/zoltan/}
\end{itemize}
These are all optional packages and do not need to be installed to use PETSc.

PETSc software is developed and maintained using
\begin{tightitemize}
\item Emacs editor
\item \href{https://git-scm.com/}{Git} revision control system
\item Python
\end{tightitemize}

PETSc documentation has been generated using
\begin{tightitemize}
  \item Sowing text processing tools developed by Bill Gropp\\ \href{http://wgropp.cs.illinois.edu/projects/software/sowing/}{http://wgropp.cs.illinois.edu/projects/software/sowing/}
\item c2html
\item pdflatex
\item python
\end{tightitemize}
\
